package com.manxi.mall.mapper;  // 修改包路径

import com.manxi.mall.bean.TradeProvinceOrderAmount;  // 修改包路径
import org.apache.ibatis.annotations.Select;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author Addroc
 * @date 2024/6/14
 * 交易域统计Mapper接口
 */
public interface TradeStatsMapper {

    /**
     * 获取某天的总交易额（GMV）
     * @param date 日期参数
     * @return 返回总交易额
     */
    @Select("select sum(order_amount) order_amount from dws_trade_province_order_window partition par#{date}")
    BigDecimal selectGMV(Integer date);

    /**
     * 获取某天各个省份的交易额
     * @param date 日期参数
     * @return 返回各省份交易额列表
     */
    @Select("select province_name,sum(order_amount) order_amount from dws_trade_province_order_window partition par#{date} " +
            " GROUP BY province_name")
    List<TradeProvinceOrderAmount> selectProvinceAmount(Integer date);

    /**
     * 获取某天的订单数量
     * @param date 日期参数
     * @return 返回订单数量
     */
    @Select("select count(*) order_count from dws_trade_order_window partition par#{date}")
    Integer selectOrderCount(Integer date);

    /**
     * 获取某天的用户数量
     * @param date 日期参数
     * @return 返回用户数量
     */
    @Select("select count(distinct user_id) user_count from dws_trade_user_window partition par#{date}")
    Integer selectUserCount(Integer date);

    /**
     * 获取某天的平均订单金额
     * @param date 日期参数
     * @return 返回平均订单金额
     */
    @Select("select avg(order_amount) avg_order_amount from dws_trade_order_window partition par#{date}")
    BigDecimal selectAvgOrderAmount(Integer date);
}